home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 1998 November / IRIX 6.5.2 Base Documentation November 1998.img / usr / share / catman / p_man / cat5 / migration.z / migration
Encoding:
Text File  |  1998-10-20  |  43.1 KB  |  727 lines

  1.  
  2.  
  3.  
  4. mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))                                                      mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      migration - dynamic memory migration
  10.  
  11. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  12.      This document describes the dynamic memory migration system available in
  13.      Origin systems.
  14.  
  15.  
  16.    IIIInnnnttttrrrroooodddduuuuccccttttiiiioooonnnn
  17.      Dynamic page migration is a mechanism that provides adaptive memory
  18.      locality for applications running on a NUMA machine such as the Origin
  19.      systems. The Origin hardware implements a competitive algorithm based on
  20.      comparing remote memory access counters to a local memory access counter;
  21.      when the difference between the numbers of remote an local accesses goes
  22.      beyond a preset threshold, an interrupt is generated to inform the
  23.      Operating System that a physical memory page is currently experiencing
  24.      excessive remote accesses.
  25.  
  26.  
  27.      Within the interrupt handler the Operating System takes a final decision
  28.      as to whether migrate the page or not. If it decides to migrate the page,
  29.      the migration is executed immediately. The system may decide not to
  30.      execute the migration due to enforcement of a migration control policy or
  31.      due to lack of resources.
  32.  
  33.  
  34.      Page migration can also be explicitely requested by users, and in
  35.      addition, it is used to assist the memory coalescing algorithms for
  36.      multiple page size support.
  37.  
  38.  
  39.    MMMMiiiiggggrrrraaaattttiiiioooonnnn MMMMoooodddduuuulllleeeessss
  40.      The migration subsystem is composed of the following modules:
  41.  
  42.      - DDDDeeeetttteeeeccccttttiiiioooonnnn MMMMoooodddduuuulllleeee.... This module monitors memory accesses issued by nodes
  43.        in the system to each physical memory page. In Origin systems this
  44.        module is mostly implemented in hardware. This detection module informs
  45.        the _M_i_g_r_a_t_i_o_n _C_o_n_t_r_o_l _M_o_d_u_l_e that a page is experiencing excessive
  46.        remote accesses via an interrupt sent to the page's home node.
  47.  
  48.      - MMMMiiiiggggrrrraaaattttiiiioooonnnn EEEEnnnnggggiiiinnnneeee MMMMoooodddduuuulllleeee.... This module carries out the effective data
  49.        movement from their current physical memory page to a new page in the
  50.        node issuing the remote accesses.
  51.  
  52.      - MMMMiiiiggggrrrraaaattttiiiioooonnnn CCCCoooonnnnttttrrrroooollll MMMMoooodddduuuulllleeee.... This module decides whether the page should
  53.        be migrated or not, based on migration control policies, defined by
  54.        parameters such as _m_i_g_r_a_t_i_o_n _t_h_r_e_s_h_o_l_d, _b_o_u_n_c_e _d_e_t_e_c_t_i_o_n _a_n_d
  55.        _p_r_e_v_e_n_t_i_o_n, _d_a_m_p_e_n_i_n_g _f_a_c_t_o_r, and others.
  56.  
  57.      - MMMMiiiiggggrrrraaaattttiiiioooonnnn CCCCoooonnnnttttrrrroooollll PPPPeeeerrrriiiiooooddddiiiicccc OOOOppppeeeerrrraaaattttiiiioooonnnnssss MMMMoooodddduuuulllleeee.... This module executes all
  58.        periodic operations needed for the _M_i_g_r_a_t_i_o_n _C_o_n_t_r_o_l _M_o_d_u_l_e.
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))                                                      mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))
  71.  
  72.  
  73.  
  74.      - MMMMeeeemmmmoooorrrryyyy MMMMaaaannnnaaaaggggeeeemmmmeeeennnntttt CCCCoooonnnnttttrrrroooollll IIIInnnntttteeeerrrrffffaaaacccceeee MMMMoooodddduuuulllleeee ((((MMMMMMMMCCCCIIII MMMMoooodddduuuulllleeee)))).... This module
  75.        provides an interface for users to tune the migration policy associated
  76.        with and address space.
  77.  
  78.  
  79.    MMMMiiiiggggrrrraaaattttiiiioooonnnn DDDDeeeetttteeeeccccttttiiiioooonnnn MMMMoooodddduuuulllleeee
  80.      The basic goal of memory migration is to minimize memory access latency.
  81.      In a NUMA system where local memory access latency is smaller then remote
  82.      memory access latency, we can achieve this latency minimization goal by
  83.      moving the data to the node where most memory references are going to be
  84.      issued from.
  85.  
  86.      It'd be great to be able to move data to the node where they're going to
  87.      be needed right before they're actually needed. Unfortunately, we cannot
  88.      predict the future (yet). Fortunately, common programs usually have some
  89.      amount of temporal and spatial locality, which allows us to heuristically
  90.      predict the future based on the behavior observed during some past period
  91.      of time.
  92.  
  93.      The usual procedure used to predict future memory accesses to a page is
  94.      to count the memory references to this page issued by each node in the
  95.      system. If the accumulated number of remote references becomes
  96.      considerably greater than the number of accumulated local references,
  97.      then it may be beneficial to migrate the page to the remote node issuing
  98.      the references, specially if this remote node will continue accessing
  99.      this same page for a long time.
  100.  
  101.      Origin systems have counters that continuosly monitor all memory accesses
  102.      issued by each node in the system to each physical memory page. In a 64-
  103.      node Origin (128 processors), we have 64 memory access counters for every
  104.      4-KB low level physical page (4 KB is the size of a low level physical
  105.      page size; software page sizes start at 16KB for Origin systems). For
  106.      every memory access, the counter associated with the node issuing the
  107.      reference is incremented; at the same time, this counter is compared to
  108.      the counter that keeps track of local accesses, and if the remote counter
  109.      exceeds the local counter by a threshold, an interrupt is generated
  110.      advising the Operating System about the existence of a page with
  111.      excessive remote accesses.
  112.  
  113.      Upon reception of the interrupt, the _M_i_g_r_a_t_i_o_n _C_o_n_t_r_o_l _M_o_d_u_l_e in the
  114.      Operating System decides whether to migrate the page or not.
  115.  
  116.      The threshold that determines how large the difference between the remote
  117.      and the local counters needs to be in order for the interrupt to be
  118.      generated is stored in a per-node hardware register, which is initialized
  119.      by the Migration Control Module. The _d_e_f_a_u_l_t _s_y_s_t_e_m _t_h_r_e_s_h_o_l_d defined in
  120.      /var/sysgen/mtune/numa by the tunable variables
  121.      nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ddddeeeeffffaaaauuuulllltttt____tttthhhhrrrreeeesssshhhhoooolllldddd and nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____tttthhhhrrrreeeesssshhhhoooolllldddd____rrrreeeeffffeeeerrrreeeennnncccceeee (see
  122.      Migration Tunables below), and the threshold specified by users as a
  123.      parameter of a  migration policy (mmci(5)), are not directly stored into
  124.      this register due to the fact that different pages on the same node may
  125.      have different migration thresholds. These thresholds are used to
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))                                                      mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))
  137.  
  138.  
  139.  
  140.      initialize the reference counters when a page is initialized.
  141.  
  142.  
  143.    MMMMiiiiggggrrrraaaattttiiiioooonnnn EEEEnnnnggggiiiinnnneeee MMMMoooodddduuuulllleeee
  144.      This module transparently moves a page from one physical frame to
  145.      another. The migration engine first verifies the availability of all
  146.      resources needed to realize the migration of a page and, if not all of
  147.      them are available, it just aborts the operation.
  148.  
  149.      The data transfer operation may be done using a processor or a
  150.      specialized Block Transfer Engine. Translation lookaside buffer (TLB)
  151.      shootdowns may be done using inter-processor interrupts or special
  152.      hardware kown as _p_o_i_s_o_n _b_i_t_s, available only as an option on special
  153.      Origin systems running Cellular Irix 6.5 or later. TLB shootdowns are
  154.      needed in order to avoid the use of stale translations that may be
  155.      pointing to the physical memory page that contained the data before
  156.      migration took place. Normally, a TLB shootdown operation is performed by
  157.      sending interrupts to all processors in the system with a TLB that may
  158.      have stale translation entries. On systems with _p_o_i_s_o_n _b_i_t_s, this global
  159.      TLB shootdown is not needed: along with the data transfer operation,
  160.      hardware bits are automatically set to indicate that the page is now
  161.      stale (poisonous); if a processor tries to access this stale page via a
  162.      stale translation, the memory management hardware generates a special Bus
  163.      Error which causes the TLB with the stale translation to be updated.
  164.      Effectively, poison bits allow for the implementation of a lazy TLB
  165.      shootdown algorithm.
  166.  
  167.      The vehicle used for the data transfer operation may be selected by the
  168.      system administrator via a tunable variable in /var/sysgen/mtune/numa:
  169.      nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____vvvveeeehhhhiiiicccclllleeee. Poison bit based TLB shootdowns are enabled whenever
  170.      the data transfer vehicle is the Block Transfer Engine and the hardware
  171.      is equipped with the optional _p_o_i_s_o_n _b_i_t_s.
  172.  
  173.  
  174.    MMMMiiiiggggrrrraaaattttiiiioooonnnn CCCCoooonnnnttttrrrroooollll MMMMoooodddduuuulllleeee
  175.      This module decides whether a page should be migrated or not, after
  176.      receiving a notification (via an interrupt) from the _M_i_g_r_a_t_i_o_n _D_e_t_e_c_t_i_o_n
  177.      _M_o_d_u_l_e alerting that a page is experiencing excessive remote accesses.
  178.      This decision is based on applicable migration control policies and
  179.      resource availability.
  180.  
  181.      The basic idea behind controlling migration is that it's not always a
  182.      good idea to migrate a page when the memory reference counters are
  183.      telling us that a page is experiencing excessive remote accesses; indeed,
  184.      sometimes the page may be bouncing back and forth due to ill application
  185.      behavior, the counters may have accumulated too much past knowledge,
  186.      making them unfit to predict near future behavior, the destination node
  187.      may be very low in memory, or the path currently needed to do the
  188.      migration may currently be too busy.
  189.  
  190.      The Migration Control Module applies a series of filters to a reference
  191.      counter notification or _m_i_g_r_a_t_i_o_n _r_e_q_u_e_s_t, as enumerated below.  All
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))                                                      mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))
  203.  
  204.  
  205.  
  206.      tunables mentioned in this list are found in /var/sysgen/mtune/numa.
  207.  
  208.  
  209.      Node Distance Filter        This filter rejects all migration requests
  210.                                  where the distance between the source and the
  211.                                  destination is less than
  212.                                  nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____mmmmiiiinnnn____ddddiiiissssttttaaaannnncccceeee in
  213.                                  /var/sysgen/mtune/numa. All rejected requests
  214.                                  result in the page being frozen in order to
  215.                                  prevent this request from being re-issued too
  216.                                  soon.
  217.  
  218.      Memory Pressure Filter      This filter rejects migration requests to
  219.                                  nodes where physical memory is low.  The
  220.                                  threshold for low memory is defined by the
  221.                                  tunable nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____mmmmeeeemmmmoooorrrryyyy____lllloooowwww____tttthhhhrrrreeeesssshhhhoooolllldddd, which
  222.                                  defines the minimum percentage of physical
  223.                                  memory that needs to be available in order
  224.                                  for a page to be migrated there. This filter
  225.                                  can be enabled and disabled using the tunable
  226.                                  nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____mmmmeeeemmmmoooorrrryyyy____lllloooowwww____eeeennnnaaaabbbblllleeeedddd.
  227.  
  228.      Traffic Control Filter      Experimental filter intended to throttle
  229.                                  migration down when the Craylink Interconnect
  230.                                  traffic reaches peak levels. Experiments have
  231.                                  shown that this filter is unnecessary for
  232.                                  Origin 2000 systems.
  233.  
  234.      Bounce Control Filter       Sometimes pages may start bouncing due to ill
  235.                                  application behavior or simple page level
  236.                                  false sharing. This filter detects and
  237.                                  freezes bouncing pages. The detection is done
  238.                                  by keeping a count of the number of
  239.                                  migrations per page in a counter that is aged
  240.                                  (periodically decremented by a system
  241.                                  daemon). If the count ever goes beyond a
  242.                                  threshold, it is considered to be bouncing
  243.                                  and it is therefore frozen. Frozen pages
  244.                                  start melting immediately, so that after some
  245.                                  period of time, they are unfrozen and
  246.                                  migratable again. Note the the melting
  247.                                  procedure is gradual, not instantaneous. The
  248.                                  bounce control filter relies on operations
  249.                                  executed periodically by the _M_i_g_r_a_t_i_o_n
  250.                                  _C_o_n_t_r_o_l _P_e_r_i_o_d_i_c _O_p_e_r_a_t_i_o_n_s _M_o_d_u_l_e described
  251.                                  below, for a) aging of the migration counters
  252.                                  and b) melting of frozen pages. The period of
  253.                                  these bounce control periodic operations is
  254.                                  defined by the tunable
  255.                                  nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____bbbboooouuuunnnncccceeee____ccccoooonnnnttttrrrroooollll____iiiinnnntttteeeerrrrvvvvaaaallll. The
  256.                                  default value for this tunable is 0, which
  257.                                  translates into a period such that 4 physical
  258.  
  259.  
  260.  
  261.                                                                         PPPPaaaaggggeeee 4444
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))                                                      mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))
  269.  
  270.  
  271.  
  272.                                  pages are operated on per tick (10[ms]
  273.                                  intervals). Freezing can be enabled and
  274.                                  disabled using the tunable
  275.                                  nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ffffrrrreeeeeeeezzzzeeee____eeeennnnaaaabbbblllleeeedddd, and the freezing
  276.                                  threshold can be set using the tunable
  277.                                  nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ffffrrrreeeeeeeezzzzeeee____tttthhhhrrrreeeesssshhhhoooolllldddd. This threshold is
  278.                                  specified as a percentage of the maximum
  279.                                  efffective freezing threshold value, which is
  280.                                  7 for Origin 2000 systems. Melting can be
  281.                                  enabled and disabled using the tunable
  282.                                  nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____mmmmeeeelllltttt____eeeennnnaaaabbbblllleeeedddd, and the melting
  283.                                  threshold can be set using the tunable
  284.                                  nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____mmmmeeeelllltttt____tttthhhhrrrreeeesssshhhhoooolllldddd.  The melting
  285.                                  threshold is expressed as a percentage of the
  286.                                  maximum effective melting threshold value,
  287.                                  which is 7 for Origin 2000 systems.
  288.  
  289.      Migration Dampening Filter  This filter minimizes the amount of migration
  290.                                  due to quick temporary remote memory
  291.                                  accesses, such as those that occur when
  292.                                  caches are loaded from a cold state, or when
  293.                                  they are reloaded with a new context. We
  294.                                  implement this dampening flter using a per-
  295.                                  page migration request counter that is
  296.                                  incremented every time we receive a migration
  297.                                  request interrupt, and aged (periodically
  298.                                  decremented) by the _M_i_g_r_a_t_i_o_n _C_o_n_t_r_o_l
  299.                                  _P_e_r_i_o_d_i_c _O_p_e_r_a_t_i_o_n_s _M_o_d_u_l_e. We effectively
  300.                                  migrate a page only if the counter reaches a
  301.                                  value greater than some dampening threshold.
  302.                                  This will happen only for applications tha
  303.                                  continuously generate remote accesses to the
  304.                                  same page during some interval of time. If
  305.                                  the application experiences just a short,
  306.                                  transitory sequence of remote accesses, it is
  307.                                  very unlikely that the migration request
  308.                                  counter will reach the threshold value. This
  309.                                  filter can be enabled and disabled using the
  310.                                  tunable nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ddddaaaammmmppppeeeennnniiiinnnngggg____eeeennnnaaaabbbblllleeeedddd, and the
  311.                                  migration request coun threshold can be set
  312.                                  using the tunable nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ddddaaaammmmppppeeeennnniiiinnnngggg____ffffaaaaccccttttoooorrrr.
  313.  
  314.  
  315.      The memory reference counters are re-initialized to their startup values
  316.      after every reference counter interrupt.
  317.  
  318.  
  319.    MMMMiiiiggggrrrraaaattttiiiioooonnnn CCCCoooonnnnttttrrrroooollll PPPPeeeerrrriiiiooooddddiiiicccc OOOOppppeeeerrrraaaattttiiiioooonnnnssss MMMMoooodddduuuulllleeee
  320.      The _M_i_g_r_a_t_i_o_n _C_o_n_t_r_o_l _M_o_d_u_l_e relies on several periodic operations. These
  321.      operations are listed below:
  322.  
  323.  
  324.  
  325.  
  326.  
  327.                                                                         PPPPaaaaggggeeee 5555
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334. mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))                                                      mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))
  335.  
  336.  
  337.  
  338.      - Bounce Control Operations. Age migration counter for freezing and
  339.        melting.
  340.  
  341.      _ Unpegging. Reset memory reference counters that have reached a
  342.        saturation level.
  343.  
  344.      - Queue Control Operations. Age queued outstanding migration requests.
  345.        Experimental, always disabled for production systems.
  346.  
  347.      - Traffic Control Operations. Sample the state of the Craylink
  348.        interconnect and correspondingly adjust the per-node migration
  349.        threshold. Experimental, always disabled for production systems.
  350.  
  351.      These operations are executed in a loop, triggered once every
  352.      mmmmeeeemmmm____ttttiiiicccckkkk____bbbbaaaasssseeee____ppppeeeerrrriiiioooodddd, a tunable that defines the migration control
  353.      periodic period in terms of system ticks (a system tick is equivalent to
  354.      10 [ms] on Origin systems runing Irix 6.5). This loop of operations may
  355.      be enabled and disabled using the tunable mmmmeeeemmmm____ttttiiiicccckkkk____eeeennnnaaaabbbblllleeeedddd.  If migration
  356.      is enabled or users are allowed to use migration, this loop must be
  357.      enabled.
  358.  
  359.      In order to minimize interference with user processes, we limit the
  360.      number of pages operated on in a loop to a few pages, trying to limit the
  361.      time used to less than 20 [us]. Administrators can adjust the time
  362.      dedicated to these periodic operations via the following tunables:
  363.  
  364.      + mmmmeeeemmmm____ttttiiiicccckkkk____bbbbaaaasssseeee____ppppeeeerrrriiiioooodddd
  365.  
  366.      + nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____uuuunnnnppppeeeeggggggggiiiinnnngggg____ccccoooonnnnttttrrrroooollll____iiiinnnntttteeeerrrrvvvvaaaallll
  367.  
  368.      + nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ttttrrrraaaaffffffffiiiicccc____ccccoooonnnnttttrrrroooollll____iiiinnnntttteeeerrrrvvvvaaaallll
  369.  
  370.      + nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____bbbboooouuuunnnncccceeee____ccccoooonnnnttttrrrroooollll____iiiinnnntttteeeerrrrvvvvaaaallll
  371.  
  372.    DDDDeeeessssccccrrrriiiippppttttiiiioooonnnn ooooffff PPPPeeeerrrriiiiooooddddiiiicccc OOOOppppeeeerrrraaaattttiiiioooonnnnssss
  373.      The following list describes the _B_o_u_n_c_e _C_o_n_t_r_o_l _P_e_r_i_o_d_i_c _O_p_e_r_a_t_i_o_n_s in
  374.      detail:
  375.  
  376.      Aging Migration Counters    In order to detect bouncing we keep track of
  377.                                  the number of migrations per page using a
  378.                                  counter that is periodically decremented
  379.                                  (aged). When the counter goes beyond a
  380.                                  threshold, we consider the page to be
  381.                                  bouncing a freeze it.
  382.  
  383.      Aging Migration Request Counters
  384.                                  In order to avoid excessive migration or
  385.                                  bouncing due to short, transitory remote
  386.                                  memry access sequences we have a migration
  387.                                  dampening filter that needs to count several
  388.                                  migration requests within a limited period of
  389.                                  time before it actually lets  a real page
  390.  
  391.  
  392.  
  393.                                                                         PPPPaaaaggggeeee 6666
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400. mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))                                                      mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))
  401.  
  402.  
  403.  
  404.                                  migration take place. The time factor is
  405.                                  introduced in the filter by aging the
  406.                                  migration request counters.
  407.  
  408.      Melting Frozen Pages        When a page is frozen we want to eventually
  409.                                  unfreeze it so that it becomes migratable
  410.                                  again. This behavior is desirable because
  411.                                  usually the events that cause a page to be
  412.                                  frozen are temporary. As part of the periodic
  413.                                  operations, we increment a counter per page
  414.                                  to keep track of how long the page has been
  415.                                  frozen. When the counter goes beyond a
  416.                                  threshold, menaing that the page has been
  417.                                  frozen for a sufficiently long time already,
  418.                                  we unfreeze the page making it migratable
  419.                                  again.
  420.  
  421.      The _U_n_p_e_g_g_i_n_g _P_e_r_i_o_d_i_c _O_p_e_r_a_t_i_o_n consists in scanning all the memory
  422.      reference counters looking for those counters that have pegged due to
  423.      having reached their maximum count. When a pegged counter is found, the
  424.      complete set of counters that counter belongs to (all counter associated
  425.      with a page) is restarted.
  426.  
  427.      The current implementation of the _M_i_g_r_a_t_i_o_n _C_o_n_t_r_o_l mmmmoooodddduuuulllleeee ddddooooeeeessss nnnnooootttt
  428.      eeeexxxxeeeeccccuuuutttteeee _Q_u_e_u_e _C_o_n_t_r_o_l _P_e_r_i_o_d_i_c _O_p_e_r_a_t_i_o_n_s oooorrrr _T_r_a_f_f_i_c _C_o_n_t_r_o_l _P_e_r_i_o_d_i_c
  429.      _O_p_e_r_a_t_i_o_n_s....
  430.  
  431.    PPPPaaaaggggeeee MMMMiiiiggggrrrraaaattttiiiioooonnnn TTTTuuuunnnnaaaabbbblllleeeessss
  432.      This is a list of all the memory migration tunables in
  433.      /var/sysgen/mtune/numa that define the default memory migration policy
  434.      used by the system.
  435.  
  436.      * nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ddddeeeeffffaaaauuuulllltttt____mmmmooooddddeeee.  This tunable defines the default migration
  437.        mode. It can take the following values:
  438.  
  439.  
  440.               0: MIGR_DEFMODE_DISABLED
  441.                  Migration is completely disabled, users cannot use migration.
  442.  
  443.               1: MIGR_DEFMODE_ENABLED
  444.                  Migration is always enabled, users cannot disable migration.
  445.  
  446.               2: MIGR_DEFMODE_NORMOFF
  447.                  Migration is normally off, users can enable migration for an application.
  448.  
  449.               3: MIGR_DEFMODE_NORMON
  450.                  Migration is normally on, users can disable migration for an application.
  451.  
  452.               4: MIGR_DEFMODE_LIMITED
  453.                  Migration is normally off for machine configurations with
  454.                  a maximum Craylink distance less than  numa_migr_min_maxradius
  455.                  (defined below). Migration is normally on otherwise. Users
  456.  
  457.  
  458.  
  459.                                                                         PPPPaaaaggggeeee 7777
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466. mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))                                                      mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))
  467.  
  468.  
  469.  
  470.                  can override this mode.
  471.  
  472.  
  473.  
  474.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ddddeeeeffffaaaauuuulllltttt____tttthhhhrrrreeeesssshhhhoooolllldddd.  This threshold defines the minimum
  475.           difference between the local and any remote counter needed to
  476.           generate a migration request interrupt.
  477.  
  478.  
  479.               if ( (remote_counter - local_counter) >=
  480.                    ((numa_migr_threshold_reference_value / 100) * numa_migr_default_threshold)) {
  481.                           send_migration_request_intr();
  482.               }
  483.  
  484.  
  485.  
  486.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____tttthhhhrrrreeeesssshhhhoooolllldddd____rrrreeeeffffeeeerrrreeeennnncccceeee.  This parameter defines the pegging
  487.           value for the memory reference counters.  It is machine
  488.           configuration dependent. For Origin 2000 systems, it can take the
  489.           following values:
  490.  
  491.  
  492.              0: MIGR_THRESHREF_STANDARD = Threshold reference is 2048 (11 bit counters)
  493.                                           Maximum threshold allowed for systems
  494.                                           with STANDARD DIMMS. This is the default.
  495.              1: MIGR_THRESHREF_PREMIUM =  Threshold reference is 524288 (19-bit counters)
  496.                                           Maximum threshold allowed for systems
  497.                                           with *all* PREMIUM SIMMS.
  498.  
  499.  
  500.  
  501.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____vvvveeeehhhhiiiicccclllleeee.  This tunable defines what device the system
  502.           should use to migrate a page.  The value 0 selects the Block
  503.           Transfer Engine (BTE) and a value of 1 selects the processor. When
  504.           the BTE is selected, and the system is equipped with the optional
  505.           _p_o_i_s_o_n _b_i_t_s, the system automatically uses _L_a_z_y _T_L_B _S_h_o_o_t_d_o_w_n
  506.           _A_l_g_o_r_i_t_h_m_s.
  507.  
  508.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____mmmmiiiinnnn____mmmmaaaaxxxxrrrraaaaddddiiiiuuuussss.  This tunable is used if
  509.           nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ddddeeeeffffaaaauuuulllltttt____mmmmooooddddeeee has been set to mode 4
  510.           (MIGR_DEFMODE_LIMITED). For this mode, migration is normally off for
  511.           machine configurations with a maximum Craylink distance less than
  512.           nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____mmmmiiiinnnn____mmmmaaaaxxxxrrrraaaaddddiiiiuuuussss Migration is normally on otherwise.
  513.  
  514.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____aaaauuuuttttoooo____mmmmiiiiggggrrrr____mmmmeeeecccchhhh.  This tunable defines the migration
  515.           execution mode for memory reference counter triggered migrations: 0
  516.           for immediate and 1 for delayed. Only the _I_m_m_e_d_i_a_t_e _M_o_d_e (0) is
  517.           currently available.
  518.  
  519.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____uuuusssseeeerrrr____mmmmiiiiggggrrrr____mmmmeeeecccchhhh.  This tunables defines the migration
  520.           execution mode for user requested migrations:  0 for immediate and 1
  521.           for delayed. Only the _I_m_m_e_d_i_a_t_e _M_o_d_e (0) is currently available.
  522.  
  523.  
  524.  
  525.                                                                         PPPPaaaaggggeeee 8888
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532. mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))                                                      mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))
  533.  
  534.  
  535.  
  536.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ccccooooaaaallllddddmmmmiiiiggggrrrr____mmmmeeeecccchhhh .  This tunables defines the migration
  537.           execution mode for memory coalescing migrations:  0 for immediate
  538.           and 1 for delayed. Only the _I_m_m_e_d_i_a_t_e _M_o_d_e (0) is currently
  539.           available.
  540.  
  541.      *    nnnnuuuummmmaaaa____rrrreeeeffffccccnnnntttt____ddddeeeeffffaaaauuuulllltttt____mmmmooooddddeeee.  This tunable defines the default extended
  542.           reference counter mode. It can take the following values:
  543.  
  544.  
  545.              0: REFCNT_DEFMODE_DISABLED
  546.                 Extended reference counters are disabled, users cannot access the
  547.                 extended reference counters (refcnt(5)).
  548.  
  549.              1: REFCNT_DEFMODE_ENABLED
  550.                 Extended reference counters are always enabled, users cannot disable them.
  551.  
  552.              2: REFCNT_DEFMODE_NORMOFF
  553.                 Extended reference counters are normally disabled, users can
  554.                 disable or enable the counters for an application.
  555.  
  556.              3: REFCNT_DEFMODE_NORMON
  557.                 Extended reference counters are normally enabled, users can disable or
  558.                 enable the counters for an application.
  559.  
  560.  
  561.      *    nnnnuuuummmmaaaa____rrrreeeeffffccccnnnntttt____oooovvvveeeerrrrfffflllloooowwww____tttthhhhrrrreeeesssshhhhoooolllldddd This tunable defines the count at
  562.           which the hardware reference counters notify the operating system of
  563.           a counter overflow in order for the count to be transfered into the
  564.           (software) extended reference counters. It is expresses as a
  565.           percentage of the threshold reference value defined by
  566.           nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____tttthhhhrrrreeeesssshhhhoooolllldddd____rrrreeeeffffeeeerrrreeeennnncccceeee.
  567.  
  568.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____mmmmiiiinnnn____ddddiiiissssttttaaaannnncccceeee Minimum distance required by the _N_o_d_e
  569.           _D_i_s_t_a_n_c_e _F_i_l_t_e_r in order to accept a migration request.
  570.  
  571.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____mmmmeeeemmmmoooorrrryyyy____lllloooowwww____eeeennnnaaaabbbblllleeeedddd Enable or disable the _M_e_m_o_r_y _P_r_e_s_s_u_r_e
  572.           _F_i_l_t_e_r.
  573.  
  574.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____mmmmeeeemmmmoooorrrryyyy____lllloooowwww____tttthhhhrrrreeeesssshhhhoooolllldddd Threshold at which the _M_e_m_o_r_y
  575.           _P_r_e_s_s_u_r_e _F_i_l_t_e_r starts rejecting migration requests to a node. This
  576.           threshold is expressed as a percentage of the total amount of
  577.           physical memory in  a node.
  578.  
  579.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ffffrrrreeeeeeeezzzzeeee____eeeennnnaaaabbbblllleeeedddd Enable or disable the freezing operation in
  580.           the _B_o_u_n_c_e _C_O_n_t_r_o_l _F_i_l_t_e_r.
  581.  
  582.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ffffrrrreeeeeeeezzzzeeee____tttthhhhrrrreeeesssshhhhoooolllldddd Threshold at which a page is frozen. This
  583.           tunable is expressed as a percent of the maximum count supported by
  584.           the migration counters (7 for Origin 2000).
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.                                                                         PPPPaaaaggggeeee 9999
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598. mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))                                                      mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))
  599.  
  600.  
  601.  
  602.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____mmmmeeeelllltttt____eeeennnnaaaabbbblllleeeedddd Enable or disable the melting operation in
  603.           the _B_o_u_n_c_e _C_o_n_t_r_o_l _F_i_l_t_e_r.
  604.  
  605.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____mmmmeeeelllltttt____tttthhhhrrrreeeesssshhhhoooolllldddd When a migration counter goes below this
  606.           threshold a page is unfrozen.  This tunable is expressed as a
  607.           percent of the maximum count supported by the migration counters (7
  608.           for Origin 2000).
  609.  
  610.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____bbbboooouuuunnnncccceeee____ccccoooonnnnttttrrrroooollll____iiiinnnntttteeeerrrrvvvvaaaallll This tunable defines the period
  611.           for the loop that ages the migration counters and the dampening
  612.           counters. It is expressed in terms of _n_u_m_b_e_r _o_f _m_e_m__t_i_c_k_s.  (the
  613.           mem_tick unit is defined by mmmmeeeemmmm____ttttiiiicccckkkk____bbbbaaaasssseeee____ppppeeeerrrriiiioooodddd _b_e_l_o_w).  _I_f _i_t _i_s
  614.           _s_e_t _t_o _0, _w_e _p_r_o_c_e_s_s _4 _p_a_g_e_s _p_e_r _m_e_m__t_i_c_k. _I_n _t_h_i_s _c_a_s_e, _t_h_e _a_c_t_u_a_l
  615.           _p_e_r_i_o_d _d_e_p_e_n_d_s _o_n _t_h_e _a_m_o_u_n_t _o_f _p_h_y_s_i_c_a_l _m_e_m_o_r_y _p_r_e_s_e_n_t _i_n _a _n_o_d_e.
  616.  
  617.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ddddaaaammmmppppeeeennnniiiinnnngggg____eeeennnnaaaabbbblllleeeedddd Enable or disable migration dampening.
  618.  
  619.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ddddaaaammmmppppeeeennnniiiinnnngggg____ffffaaaaccccttttoooorrrr The number of migration requests needed
  620.           for a page before migration is actually executed. It is expressed as
  621.           a percentage of the maximum count supported by the migration-request
  622.           counters (3 for Origin 2000).
  623.  
  624.      *    mmmmeeeemmmm____ttttiiiicccckkkk____eeeennnnaaaabbbblllleeeedddd Enable or disabled the loop that executes the
  625.           _M_i_g_r_a_t_i_o_n _C_o_n_t_r_o_l _P_e_r_i_o_d_i_c _O_p_e_r_a_t_i_o_n.
  626.  
  627.      *    mmmmeeeemmmm____ttttiiiicccckkkk____bbbbaaaasssseeee____ppppeeeerrrriiiioooodddd Number of 10[ms] system ticks in one mem_tick.
  628.  
  629.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____uuuunnnnppppeeeeggggggggiiiinnnngggg____ccccoooonnnnttttrrrroooollll____eeeennnnaaaabbbblllleeeedddd Enable or disable the unpegging
  630.           periodic operation
  631.  
  632.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____uuuunnnnppppeeeeggggggggiiiinnnngggg____ccccoooonnnnttttrrrroooollll____iiiinnnntttteeeerrrrvvvvaaaallll This tunable defines the period
  633.           for the loop that unpegs the hardware memory reference counters. It
  634.           is expressed in terms of _n_u_m_b_e_r _o_f _m_e_m__t_i_c_k_s.  (the mem_tick unit is
  635.           defined by mmmmeeeemmmm____ttttiiiicccckkkk____bbbbaaaasssseeee____ppppeeeerrrriiiioooodddd).  _I_f _i_t _i_s _s_e_t _t_o _0, _w_e _p_r_o_c_e_s_s _8
  636.           _p_a_g_e_s _p_e_r _m_e_m__t_i_c_k. _I_n _t_h_i_s _c_a_s_e, _t_h_e _a_c_t_u_a_l _p_e_r_i_o_d _d_e_p_e_n_d_s _o_n _t_h_e
  637.           _a_m_o_u_n_t _o_f _p_h_y_s_i_c_a_l _m_e_m_o_r_y _p_r_e_s_e_n_t _i_n _a _n_o_d_e.
  638.  
  639.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____uuuunnnnppppeeeeggggggggiiiinnnngggg____ccccoooonnnnttttrrrroooollll____tttthhhhrrrreeeesssshhhhoooolllldddd Hardware memory reference
  640.           counter value at which we consider the counter to be pegged. It is
  641.           expressed as a percent of the maximum count defined by
  642.           numa_migr_threshold_reference.
  643.  
  644.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ttttrrrraaaaffffffffiiiicccc____ccccoooonnnnttttrrrroooollll____eeeennnnaaaabbbblllleeeedddd Enable or disable the _T_r_a_f_f_i_c
  645.           _C_o_n_t_r_o_l _F_i_l_t_e_r. This is an experimental module, and therefore it
  646.           should always be disabled.
  647.  
  648.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ttttrrrraaaaffffffffiiiicccc____ccccoooonnnnttttrrrroooollll____iiiinnnntttteeeerrrrvvvvaaaallll Traffic control period.
  649.           Experimental module.
  650.  
  651.      *    nnnnuuuummmmaaaa____mmmmiiiiggggrrrr____ttttrrrraaaaffffffffiiiicccc____ccccoooonnnnttttrrrroooollll____tttthhhhrrrreeeesssshhhhoooolllldddd Traffic control threshold for
  652.           kicking the batch migration of enqueued migration requests.
  653.           Experimental module.
  654.  
  655.  
  656.  
  657.                                                                        PPPPaaaaggggeeee 11110000
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664. mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))                                                      mmmmiiiiggggrrrraaaattttiiiioooonnnn((((5555))))
  665.  
  666.  
  667.  
  668. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  669.      numa(5), replication(5), mtune(4), /var/sysgen/mtune/numa, refcnt(5),
  670.      mmci(5), nstats(1), sn(1).
  671.  
  672.  
  673.  
  674.  
  675.  
  676.  
  677.  
  678.  
  679.  
  680.  
  681.  
  682.  
  683.  
  684.  
  685.  
  686.  
  687.  
  688.  
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.                                                                        PPPPaaaaggggeeee 11111111
  724.  
  725.  
  726.  
  727.